const axios = require('axios');

// 当前ngrok域名
const CURRENT_DOMAIN = '13be2816e0e8.ngrok-free.app';

async function testNgrokDomain() {
  console.log('🔍 测试ngrok域名可访问性...');
  console.log('域名:', CURRENT_DOMAIN);
  
  try {
    // 测试访问回调URL
    const testUrl = `http://${CURRENT_DOMAIN}/lxt/shuidi-callback`;
    console.log('测试URL:', testUrl);
    
    const response = await axios.get(testUrl, {
      timeout: 10000,
      headers: {
        'ngrok-skip-browser-warning': 'true',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
      },
      validateStatus: function (status) {
        // 接受400状态码（因为没有code参数）
        return status < 500; 
      }
    });
    
    console.log('✅ 域名可访问！');
    console.log('状态码:', response.status);
    console.log('响应头:', response.headers);
    
    if (response.status === 400) {
      console.log('✅ 回调路由正常工作（返回400是因为缺少code参数，这是正常的）');
    }
    
    return true;
    
  } catch (error) {
    console.log('❌ 域名访问失败');
    console.log('错误:', error.message);
    
    if (error.code === 'ENOTFOUND') {
      console.log('💡 建议: 检查ngrok隧道是否正在运行');
      console.log('💡 建议: 可能需要更新ngrok域名');
    }
    
    if (error.code === 'ECONNREFUSED') {
      console.log('💡 建议: 检查后端服务器是否在运行');
    }
    
    return false;
  }
}

// 测试本地服务器
async function testLocalServer() {
  console.log('\n🔍 测试本地服务器...');
  
  try {
    const response = await axios.get('http://localhost:3001/lxt/shuidi-callback', {
      timeout: 5000,
      validateStatus: function (status) {
        return status < 500;
      }
    });
    
    console.log('✅ 本地服务器正常运行');
    console.log('状态码:', response.status);
    return true;
    
  } catch (error) {
    console.log('❌ 本地服务器无法访问');
    console.log('错误:', error.message);
    return false;
  }
}

async function main() {
  console.log('=== Ngrok 域名测试工具 ===\n');
  
  // 测试本地服务器
  const localOk = await testLocalServer();
  
  // 测试ngrok域名
  const ngrokOk = await testNgrokDomain();
  
  console.log('\n=== 测试结果 ===');
  console.log('本地服务器:', localOk ? '✅ 正常' : '❌ 异常');
  console.log('Ngrok域名:', ngrokOk ? '✅ 正常' : '❌ 异常');
  
  if (!localOk) {
    console.log('\n💡 解决方案:');
    console.log('1. 确保后端服务器正在运行: npm start 或 node app.js');
    console.log('2. 检查端口3001是否被占用');
  }
  
  if (!ngrokOk) {
    console.log('\n💡 解决方案:');
    console.log('1. 启动ngrok隧道: ngrok http 3001');
    console.log('2. 复制新的ngrok URL');
    console.log('3. 运行更新脚本: node update-ngrok.js [新域名]');
    console.log('4. 重启后端服务器');
  }
  
  if (localOk && ngrokOk) {
    console.log('\n🎉 所有服务都正常运行！');
    console.log('可以进行第三方登录测试了。');
  }
}

main().catch(console.error); 